﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TreeBuilder.Contracts;
using MvvmTreeView;
using System.Collections.ObjectModel;
using System.ServiceModel.DomainServices.Client;
using UIObjects.TreeViewInterfaces;
using AbstraX.ClientInterfaces;

namespace TreeBuilder.Services
{
    public class TreeBuilderService : ITreeBuilderService
    {
        public IRootsCollection TreeBuilderRoots
        {
            get 
            {
                return null;
            }
        }

        public byte[] LoadImageForItemType(string itemTypeName)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeAttributeNode> CreateAttributeNode(ITreeNodeBase parent, AbstraX.ClientInterfaces.IAttribute attribute)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeElementNode> CreateElementNode(ITreeNodeBase parent, AbstraX.ClientInterfaces.IElement attribute)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodePropertyBinding> CreatePropertyBindingNode(ITreeNodeBase parent, UIObjects.TreeViewInterfaces.TreeNodePropertyType propertyType, AbstraX.ClientInterfaces.IAttribute attribute)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodePropertyBinding> CreatePropertyBindingNode(ITreeNodeBase parent, UIObjects.TreeViewInterfaces.TreeNodePropertyType propertyType, UIObjects.TreeViewInterfaces.TreeNodePropertyStockBinding stockBinding)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeQuery> CreateQueryNode(ITreeNodeBase parent, AbstraX.ClientInterfaces.IBase baseObject)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeRootSource> CreateRootSourceNode(ITreeNodeBase parent, AbstraX.ClientInterfaces.IBase baseObject)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeFolder> CreateFolderNode(ITreeNodeBase parent, AbstraX.ClientInterfaces.IBase folderSource)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeAdvancedQuery> CreateAdvancedQueryNode(ITreeNodeBase parent, AbstraX.ClientInterfaces.IBase baseObject)
        {
            throw new NotImplementedException();
        }

        public ObservableCollection<ITreeNodeBase> LoadChildren(ITreeNodeServerEntity entity)
        {
            throw new NotImplementedException();
        }

        public ObservableCollection<AbstraX.ClientInterfaces.IElement> GetPotentialRootSources()
        {
            throw new NotImplementedException();
        }

        public SubmitOperation UpdateNode<T>(T node) where T : ITreeNodeBase
        {
            throw new NotImplementedException();
        }

        public SubmitOperation DeleteNode<T>(T node) where T : ITreeNodeBase
        {
            throw new NotImplementedException();
        }

        ItemGenerationOperation<T> ITreeBuilderService.GenerateItemFromID<T>(string id)
        {
            throw new NotImplementedException();
        }

        public NodeInvokeOperation<TreeNodePropertyType> GetItemBindingPropertyTypes(ITreeNodeServerEntity parentEntity)
        {
            throw new NotImplementedException();
        }

        public NodeImageLoadOperation LoadImageEditor(ITreeNodeBase parent, string fileName)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodePropertyBinding> CreatePropertyBindingNode(ITreeNodeBase parent, TreeNodePropertyType propertyType, AbstraX.ClientInterfaces.IElement element)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeMenuItem> CreateMenuItem(ITreeNodeBase parent, AbstraX.ClientInterfaces.IBase menuSource)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeMenuItem> CreateMenuItem(ITreeNodeBase parent, AbstraX.ClientInterfaces.IBase menuSource, TreeNodeMenuItemStockAction stockAction)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeMenuItem> CreateMenuItem(ITreeNodeBase parent, AbstraX.ClientInterfaces.IBase menuSource, AbstraX.ClientInterfaces.IOperation operation)
        {
            throw new NotImplementedException();
        }

        public NodeInvokeOperation<bool> HasImage(ITreeNodePropertyBinding propertyBinding)
        {
            throw new NotImplementedException();
        }

        public NodeInvokeOperation<bool> HasImage(ITreeNodeMenuItem menuItem)
        {
            throw new NotImplementedException();
        }

        public NodeInvokeOperation<ITreeNodeImage> GetImage(ITreeNodePropertyBinding propertyBinding)
        {
            throw new NotImplementedException();
        }

        public NodeInvokeOperation<ITreeNodeImage> GetImage(ITreeNodeMenuItem menuItem)
        {
            throw new NotImplementedException();
        }

        public SubmitOperation UpdateImage(ITreeNodeImage image)
        {
            throw new NotImplementedException();
        }

        public Type GetNodeIDType(string id)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodePropertyBinding> CreatePropertyBindingNode(ITreeNodeBase parent, TreeNodePropertyType propertyType, AbstraX.ClientInterfaces.IAttribute attribute, bool sourceIsURLBinding)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeTransferMapping> CreateTransferCreationMappingNode(ITreeNodeBase parent, TransferCreationMappingType mappingType, AbstraX.ClientInterfaces.IBase targetSource)
        {
            throw new NotImplementedException();
        }

        public NodeInvokeOperation<TransferCreationMappingType> GetTransferCreationMappingTypes(ITreeNodeServerEntity parentEntity)
        {
            throw new NotImplementedException();
        }

        public NodeInvokeOperation<Guid> GetServerImageFormat(ITreeNodeImage image)
        {
            throw new NotImplementedException();
        }

        public NodeInvokeOperation<TreeNodeImageFormat> GetTreeNodeImageFormat(ITreeNodeImage image)
        {
            throw new NotImplementedException();
        }

        public void ReportException(ITreeNodeBase node, Exception ex)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodePropertyBinding> CreateImageBindingNode(ITreeNodeBase parent, ITreeNodeImage treeNodeImage)
        {
            throw new NotImplementedException();
        }

        public SubmitOperation DeleteImage(ITreeNodeImage image)
        {
            throw new NotImplementedException();
        }

        public SubmitOperation DetachImage(ITreeNodeImage image)
        {
            throw new NotImplementedException();
        }

        public T ConvertImage<T>(byte[] imageData)
        {
            throw new NotImplementedException();
        }

        public NodeCreateOperation<ITreeNodeBase> CreateShortcut(ITreeNodeBase parent, ITreeNodeBase shortcutNode)
        {
            throw new NotImplementedException();
        }

        public byte[] LoadShortcutImage()
        {
            throw new NotImplementedException();
        }

        public InvokeOperation<bool> OrphansExist()
        {
            throw new NotImplementedException();
        }

        public InvokeOperation BuildTree(ITreeBuilderRoot root)
        {
            throw new NotImplementedException();
        }

        public IParentBase RootSource
        {
            set { throw new NotImplementedException(); }
        }
    }
}
